<%--
  Created by IntelliJ IDEA.
  User: Doris丶Lee
  Date: 2020-05-18
  Time: 19:02
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.*" %>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<html>
<head>
    <base href="<%=basePath%>">
    <title>jsp:setProperty的例子的表单调用</title>
</head>
<body>
    <%-- 使用作用域要与链接页的一致，两边都要设置scope --%>
    <%--<jsp:useBean id="myUser" class="com.po.User" scope="application"/>--%>
    <jsp:useBean id="myUser" class="com.po.User" scope="request"/>
    <%--<jsp:useBean id="myUser" class="com.po.User" scope="session"/>--%>
    <%--<jsp:useBean id="myUser" class="com.po.User" scope="page"/>--%>
    <h1>setProperty动作元素（四种形式使用方法案例）</h1>
    <hr>

    <%--四种part1任选一种搭配part2的方式--%>

    <%--part1--%>
    <!--way1:根据表单自动匹配所有的属性（按名称自动匹配javabean属性，调用setter和getter方法） -->
    <jsp:setProperty name="myUser" property="*"/>

    <!--way2:根据表单匹配所有部分的属性（只匹配property设置的属性） -->
    <%--<jsp:setProperty name="myUser" property="username"/>--%>

    <!--way3:跟表单无关，通过手工赋值value给属性 -->
    <%--<jsp:setProperty name="myUser" property="username" value="lisi"/>--%>
    <%--<jsp:setProperty name="myUser" property="password" value="888888"/>--%>
    <%--<p>解释：手工赋值结果，无论用户输入什么都显示默认值</p>--%>

    <!--way4:通过URL传参数给属性赋值 -->
    <%--<jsp:setProperty name="myUser" property="username"/>--%>
    <%--<jsp:setProperty name="myUser" property="password" param="mypass"/>--%>
    <%--<div>通过url传递参数，login的表单跳转链接所带的mypass参数</div>--%>


    <%--part2--%>

    <!-- 1.使用传统的表达式方式来获取用户名和密码 -->
    用户名：<%=myUser.getUsername() %><br>
    密码：<%=myUser.getPassword() %><br>


    <!-- 2.使用getProperty方式来获取用户名和密码 -->
    <%--用户名：<jsp:getProperty name="myUser" property="username"/> <br>--%>
    <%--密码：<jsp:getProperty name="myUser" property="password"/><br>--%>


    <br>
    <br>

    <%--part3：超链接验证scope作用域范围--%>
    <%-- 超链接相当于请求重定向 --%>
    <a href="testScope.jsp">测试javabean的四个作用域范围</a>

    <%--只用request作用域，要服务器内部转换，保证是同一次请求,url不变内容已经变了--%>
    <%
        request.getRequestDispatcher("testScope.jsp").forward(request, response);
    %>

</body>
</html>
